En PHP, les fonctions `isset` et `empty` sont couramment utilisées pour vérifier les variables, mais elles ont des rôles et des comportements distincts. Examinons en détail les différences entre ces deux fonctions, en illustrant avec des exemples concrets et en citant des sources fiables.
La fonction `isset` est utilisée pour vérifier si une variable est définie et n’est pas nulle. En d’autres termes, `isset` retourne `true` si la variable existe et a une valeur autre que `null`. Si la variable n’est pas définie ou est nulle, `isset` retourne `false`.
Exemple:
```
$var1 = “Hello World”;
$var2 = null;
echo isset($var1); // Affiche 1 (true)
echo isset($var2); // N’affiche rien (false)
echo isset($var3); // N’affiche rien (false), car $var3 n’est pas définie
```
```
$var1 = “Hello”;
$var2 = “World”;
echo isset($var1, $var2); // Affiche 1 (true)
```
La fonction `empty` est utilisée pour vérifier si une variable est vide. En PHP, une variable est considérée “vide” si elle est :
- Une chaîne de caractères vide (`”“`)
- Le nombre zéro (`0` ou `0.0`)
- Une chaîne de caractères contenant “0” (`“0”`)
- Une variable nulle (`null`)
- Un tableau vide (`array()`)
- Le booléen `false`
- Une variable non définie
Exemple:
```
$var1 = “”;
$var2 = 0;
$var3 = “0”;
$var4 = null;
$var5 = array();
$var6 = false;
$var7;
echo empty($var1); // Affiche 1 (true)
echo empty($var2); // Affiche 1 (true)
echo empty($var3); // Affiche 1 (true)
echo empty($var4); // Affiche 1 (true)
echo empty($var5); // Affiche 1 (true)
echo empty($var6); // Affiche 1 (true)
echo empty($var7); // Affiche 1 (true)
```
- `isset` vs `empty`:
- `isset` vérifie si une variable est définie et non nulle.
- `empty` vérifie si une variable est équivalente à “vide” selon les critères de PHP.
Exemples combinés :
```
$var = “”;
if (isset($var)) {
echo “La variable est définie et non nulle.”;
} else {
echo “La variable n’est pas définie, ou est nulle.”;
}
if (empty($var)) {
echo “La variable est vide.”;
} else {
echo “La variable n’est pas vide.”;
}
```
Dans ce cas, `isset($var)` retournera `true` car `$var` est définie et non nulle, alors que `empty($var)` retournera `true` car `$var` est une chaîne vide.
Pour résumer, `isset` est principalement utilisé pour vérifier si une variable existe et a une valeur définie, tandis que `empty` vérifie si la valeur d’une variable est considérée comme “vide” selon les règles de PHP. Utiliser ces fonctions correctement permet de gérer les variables de manière plus robuste et d’éviter les erreurs liées à des valeurs indésirables ou inexistantes.